// pages/me/me.js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    name: '点击登录',
    avatar: '',
    islogin: false,
    openid:''
  },
  /**点击个人信息 */
  
  /** 点击头像 */
  tapAvatar(){
    if(!this.data.islogin) return;  // 未登录不让选
    // 选择图片
    wx.chooseImage({
      count: 1
    }).then(chooseRes=>{
     // console.log(chooseRes)
      // 获取选中的图片的路径
      let path = chooseRes.tempFilePaths[0];
      this.setData({avatar: path})
      //console.log(path)
      // 将图片上传至云存储时，需要整理两个文件路径
      // cloudPath  通过当前文件名随机生成
      // filePath   本地文件路径
      let cloudPath = 'img_' + Math.random() +
      path.substring(path.lastIndexOf('.'));
      // 将该图片上传到云存储空间 wx.cloud.uploadFile
      wx.cloud.uploadFile({
        cloudPath: cloudPath,
        filePath: path,
        success: (uploadRes)=>{
          //console.log(uploadRes)
          let fileID = uploadRes.fileID;
          // 将fileID更新到数据中 user.avatar 中
          let db = wx.cloud.database();
          db.collection('users').where({
            _openid: getApp().globalData.openid
          }).update({
            data: {
              avatar: fileID
            }
          })
        },
        fail:(err)=>{
         // console.log(err)
        }
      })
    })
  },

  /** 点击登录 */
  tapLogin(){
    if(this.data.islogin) return;  // 已经登录
 
    wx.getUserProfile({
      desc: '完善会员信息',
      success: (res)=>{
        this.data.islogin = true;
       // console.log(res)
        this.setData({
          name: res.userInfo.nickName,
          avatar: res.userInfo.avatarUrl
        })
        // 调用云函数  sum
        wx.cloud.callFunction({
          name: 'quickstartFunctions',
          data: {type: 'getOpenId'}
        }).then(callFuncRes=>{
          //console.log(callFuncRes)
          let openid = callFuncRes.result.openid;
          // 将openid存入globalData
          getApp().globalData.openid = openid;
          this.setData({openid})

          // 管理自己家数据库  实现自己家数据库的登录注册
          this.registAndLogin();
        })
      }
    })
  },

  /** 针对自家数据库执行注册与登录 
   *  先通过openid判断数据库中是否已经注册过
   *  如果是，则直接获取数据，更新界面即可
   *  如果不是，则执行注册
  */
  registAndLogin(){
    const db = wx.cloud.database();
    // 先通过openid检索数据库，执行登录
    db.collection('users').where({
      _openid: getApp().globalData.openid
    }).get().then(queryRes=>{
     // console.log(queryRes)
      if(queryRes.data.length != 0){ // 有用户
        let user = queryRes.data[0];
        this.setData({
          name: user.name,
          avatar: user.avatar
        })
      }else { // 没有用户
        // 实现注册业务，将用户信息存入云数据库users集合
        db.collection('users').add({
          data: {
            name: this.data.name,
            avatar: this.data.avatar
          }
        }).then(addRes=>{
          //console.log(addRes)
        })
      }
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})